/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package model;

import componenten.Database;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JOptionPane;

/**
 *
 * @author daveronvanderham
 */
public class Deelnemer {

    private String betaling;
    private int masterclass;
    private int lid;
    private String email;

    public Deelnemer() {
    }

    public Deelnemer(int deelnemer_id, int masterclass) {
        String sql = "SELECT * from deelnemer WHERE masterclass_id = " + masterclass + " AND lid_id = " + deelnemer_id + "";
        System.out.print(sql);
        try {
            ResultSet result = Database.executeSelectQuery(sql);
            boolean next = result.next();
            this.lid = deelnemer_id;
            this.masterclass = result.getInt("masterclass_id");
            this.betaling = result.getString("deelnemer_betaalstatus");


        } catch (SQLException e) {
            System.out.print(e);
        }
    }

    public Deelnemer(int masterclass, String lid) {
        this.masterclass = masterclass;
        this.lid = Integer.parseInt(lid);
        this.betaling = "nee";
    }

    public Deelnemer(int lid, int masterclass, String betaling) {
        this.masterclass = masterclass;
        this.lid = lid;
        this.betaling = betaling;
    }
    
            public Deelnemer(int lid, int masterclass, String email , String betaling) {
        this.email = email;        
        this.masterclass = masterclass;
        this.lid = lid;
        this.betaling = betaling;

    }

    public Deelnemer[] haalDeelnemersop(int masterclass_id) {

        int aantalDeelnemers = this.haalAantalLocatiepOp(masterclass_id);

        //Lijstje aanmaken voor de tennistoernooien die we uit de database gaan halen. 
        Deelnemer[] deelnemers;
        if (aantalDeelnemers == -1) {
            return null;
        } else {
            deelnemers = new Deelnemer[aantalDeelnemers];
        }

        try {

            String sql = "SELECT * FROM deelnemer WHERE masterclass_id = " + masterclass_id + "";
            ResultSet resultaat = Database.executeSelectQuery(sql);

            int teller = 0;
            while (resultaat.next()) {

                Deelnemer deelnemer = new Deelnemer(resultaat.getInt("lid_id"), resultaat.getInt("masterclass_id"), resultaat.getString("deelnemer_betaalstatus"));

                deelnemers[teller] = deelnemer;
                teller++;
            }

            return deelnemers;
        } catch (SQLException e) {
            return null;
        }
    }

    public int haalAantalLocatiepOp(int masterclass_id) {
        String sql = "SELECT COUNT(*) AS aantal FROM deelnemer WHERE masterclass_id = " + masterclass_id + "";
        try {
            ResultSet resultaat = Database.executeSelectQuery(sql);
            resultaat.next();
            int aantalLocaties = resultaat.getInt("aantal");
            return aantalLocaties;
        } catch (SQLException e) {
            return -1;
        }
    }

    public String[] getInformatie() {
        return new String[]{Integer.toString(this.getLid()), this.getEmail(),this.getBetaling()};
    }

    public boolean addDeelnemer() {

        boolean successful = false;

        //sla persoon op in de database, mbv  Database.executeInsert
        //de code sla je niet op, die wordt automatisch gegenereerd
        String query = "Insert into deelnemer( masterclass_id, lid_id , deelnemer_betaalstatus) values('"
                + getMasterclass() + "','"
                + getLid() + "','"
                + getBetaling() + "')";

        //verkorte if ... else constructie met ? en :
        if (Database.executeInsertQuery(query) == 1) { //tenminste 1 record inserted

            successful = true;
        }

        return successful;
    }

    /**
     * @return the betaling
     */
    public String getBetaling() {
        return betaling;
    }

    /**
     * @param betaling the betaling to set
     */
    public void setBetaling(String betaling) {
        this.betaling = betaling;
    }

    /**
     * @return the masterclass
     */
    public int getMasterclass() {
        return masterclass;
    }

    /**
     * @param masterclass the masterclass to set
     */
    public void setMasterclass(int masterclass) {
        this.masterclass = masterclass;
    }

    /**
     * @return the lid
     */
    public int getLid() {
        return lid;
    }

    /**
     * @param lid the lid to set
     */
    public void setLid(int lid) {
        this.lid = lid;
    }

    public boolean update() {

        boolean successful = false;

        //sla persoon op in de database, mbv  Database.executeInsert
        //de code sla je niet op, die wordt automatisch gegenereerd
        String query = "UPDATE deelnemer SET"
                + " deelnemer_betaalstatus ='" + getBetaling() + "'"
                + " WHERE masterclass_id = " + getMasterclass() + " AND lid_id = " + getLid() + "";

        //verkorte if ... else constructie met ? en :
        if (Database.executeUpdateQuery(query) == 1) { //tenminste 1 record inserted
            JOptionPane.showMessageDialog(null, "deelnemer gewijzigd");
            successful = true;
        }

        return successful;
    }

    public boolean delete() {

        boolean successful = false;

        //sla persoon op in de database, mbv  Database.executeInsert
        //de code sla je niet op, die wordt automatisch gegenereerd
        String query = "DELETE FROM deelnemer WHERE masterclass_id = " + getMasterclass() + " AND lid_id = " + getLid() + "";

        //verkorte if ... else constructie met ? en :
        if (Database.executeUpdateQuery(query) == 1) { //tenminste 1 record inserted
            JOptionPane.showMessageDialog(null, "deelnemer verwijderd");
            successful = true;
        }

        return successful;
    }

    /**
     * @return the email
     */
    public String getEmail() {
        return email;
    }

    /**
     * @param email the email to set
     */
    public void setEmail(String email) {
        this.email = email;
    }
}
